package com.santu.edu.supporter.biz.order.kd.service;

import com.santu.edu.supporter.biz.order.common.pojo.enums.OrderStatusEnum;
import com.santu.edu.supporter.biz.order.kd.pojo.dto.KdOrderDTO;
import com.santu.edu.supporter.biz.order.kd.pojo.dto.KdOrderInfoDTO;
import com.santu.edu.supporter.biz.order.kd.pojo.params.KdOrderAddParam;
import com.santu.edu.supporter.biz.order.kd.pojo.params.KdOrderUpdateParam;
import com.santu.edu.supporter.biz.pay.pojo.dto.WxChatPayDTO;
import com.santu.edu.supporter.util.PageData;

/**
 * @author luoyaoqi
 * @createTime 2024/2/21
 * @description
 */
public interface KuaidiService {
    /**
     * 添加订单
     *
     * @param addParam
     * @return
     */
    WxChatPayDTO addOrder(KdOrderAddParam addParam);

    /**
     * 更新订单
     *
     * @param updateParam
     * @return
     */
    Boolean updateOrder(KdOrderUpdateParam updateParam);

    /**
     * 修改订单状态为已取消
     *
     * @param orderId
     * @return
     */
    Boolean cancelOrder(String orderId);

    /**
     * 获取订单列表
     *
     * @param orderType
     * @return
     */
    PageData<KdOrderInfoDTO> getOrderList(Integer orderType, int page, int size);


    /**
     * 修改订单支付状态
     *
     * @param orderId
     * @param orderStatus
     * @param nowOrderStatus
     */
    void updateOrderStatus(String orderId, OrderStatusEnum orderStatus, OrderStatusEnum nowOrderStatus);

    /**
     * 订单完成
     *
     * @param orderId
     * @return
     */
    Boolean orderComplete(String orderId);

    /**
     * 已取货
     *
     * @param orderId
     * @return
     */
    Boolean goodComplete(String orderId);

    /**
     * 获取订单支付信息
     *
     * @param orderId
     * @return
     */
    WxChatPayDTO getPayInfoById(String orderId);
}
